javascript加载XML字符串或文件

您所在的位置:网站首页 js 读取xml文件 javascript加载XML字符串或文件

javascript加载XML字符串或文件

2024-01-13 00:44| 来源: 网络整理| 查看: 265

1. 加载XML文件

方法1:ajax方式。代码如下:

var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open("GET", "data.xml", false); xhr.send(null); var xmlDoc = xhr.responseXML; console.log(xmlDoc);

(关于XMLHttpRequest对象的用法,请参加 http://www.w3school.com.cn/xmldom/dom_http.asp)

注意,代码第二行的“false”,表示不用异步。如果这里改为“true”,那么xmlDoc将得到null。因为js的异步操作,不会等待文件加载完,就直接执行下面的语句了。所以,我们这里必须设置为“false”,表示必须等待文件加载完,再执行以下操作,这样才能得到正确的xmlDoc。

这种方式兼容所有高级浏览器,建议采用这种方式加载。

 

方法2:IE的方式。代码如下:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.load("note.xml"); console.log(xmlDoc);

通过IE特有的ActiveXObject("Microsoft.XMLDOM")对象的load()方法加载文件。

注意,这里还是设置了异步是false,原因和方法1的一样。

 

方法3:Firefox的方式,代码如下:

var xmlDoc = document.implementation.createDocument("", "", null); xmlDoc.async = "false"; xmlDoc.load("note.xml"); console.log(xmlDoc);

 

关于跨域加载:安全起见,现代浏览器不能跨域访问,即只能加载本机上的xml文件。

 

2. 加载XML字符串

先看代码:

1 function LoadXmlText() { 2 3 //拼接XML字符串 4 var txt = ''; 5 txt = txt + ""; 6 txt = txt + "George"; 7 txt = txt + "John"; 8 txt = txt + "Reminder"; 9 txt = txt + "Don't forget the meeting!"; 10 txt = txt + ""; 11 12 13 if (window.DOMParser) { 14 //非IE浏览器 15 xmlDoc = (new DOMParser()).parseFromString(txt, "text/xml"); 16 } else { 17 //IE浏览器 18 xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 19 // 或者:xmlDoc = new ActiveXObject("MSXML2.DOMDocument"); 20 21 xmlDoc.async = "false"; //不启用异步,保证加载文件成功之前不会进行下面操作 22 xmlDoc.loadXML(txt); 23 } 24 25 console.log(xmlDoc); 26 }

如果浏览器支持window.DOMParser对象,则直接用它的parseFromString()方法加载xml字符串。

IE浏览器不支持window.DOMParser,则用loadXML()加载。

代码中注释都写的很亲你清楚。 

 

出处:https://www.cnblogs.com/wangfupeng1988/p/3709924.html

============================================================================

我根据上面的说明,也写个符合自己是一的吧

// 加载xml文档 function loadXmlFile(xmlFile) { var xmlDoc = null; if (window.ActiveXObject) { xmlDoc = new ActiveXObject('Microsoft.XMLDOM'); xmlDoc.async = false; xmlDoc.load(xmlFile); } else if (document.implementation && document.implementation.createDocument) { xmlDoc = document.implementation.createDocument('', 'doc', null); xmlDoc.async = false; xmlDoc.preserveWhiteSpace = true; xmlDoc.load(xmlFile); } else if (window.XMLHttpRequest) {//支持出网络获取 var xmlhttp = new window.XMLHttpRequest(); xmlhttp.open("GET", "#", false); xmlhttp.send(null); xmlDoc = xmlhttp.responseXML.documentElement; } return xmlDoc; } //加载xml字符串 function loadXmlStr(xmlStr) { var xmlDoc = null; if (window.DOMParser) { //非IE浏览器 xmlDoc = (new DOMParser()).parseFromString(xmlStr, "text/xml"); } else { //IE浏览器 xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // 或者:xmlDoc = new ActiveXObject("MSXML2.DOMDocument"); xmlDoc.async = "false"; //不启用异步,保证加载文件成功之前不会进行下面操作 xmlDoc.loadXML(xmlStr); } return xmlDoc; }

 

参考:https://www.jb51.net/article/76019.htm

========================================================

既然做到了这里,就不得不说的是操作xml,其实就是dom的操作,那么就可能会用到nodeName 、nodeType、 nodeValue 这些属性

NodeTypes

文档、元素、属性以及 HTML 或 XML 文档的其他方面拥有不同的节点类型。

存在 12 种不同的节点类型,其中可能会有不同节点类型的子节点:

节点类型描述子节点 1 Element 代表元素 Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference 2 Attr 代表属性 Text, EntityReference 3 Text 代表元素或属性中的文本内容。 None 4 CDATASection 代表文档中的 CDATA 部分(不会由解析器解析的文本)。 None 5 EntityReference 代表实体引用。 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference 6 Entity 代表实体。 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference 7 ProcessingInstruction 代表处理指令。 None 8 Comment 代表注释。 None 9 Document 代表整个文档(DOM 树的根节点)。 Element, ProcessingInstruction, Comment, DocumentType 10 DocumentType 向为文档定义的实体提供接口 None 11 DocumentFragment 代表轻量级的 Document 对象,能够容纳文档的某个部分 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference 12 Notation 代表 DTD 中声明的符号。 None 节点类型 - 返回值

对于每种节点类型,nodeName 和 nodeValue 属性的返回值:

节点类型nodeName 返回nodeValue 返回 1 Element 元素名 null 2 Attr 属性名称 属性值 3 Text #text 节点的内容 4 CDATASection #cdata-section 节点的内容 5 EntityReference 实体引用名称 null 6 Entity 实体名称 null 7 ProcessingInstruction target 节点的内容 8 Comment #comment 注释文本 9 Document #document null 10 DocumentType 文档类型名称 null 11 DocumentFragment #document 片段 null 12 Notation 符号名称 null NodeTypes - Named Constants NodeType Named Constant 1 ELEMENT_NODE 2 ATTRIBUTE_NODE 3 TEXT_NODE 4 CDATA_SECTION_NODE 5 ENTITY_REFERENCE_NODE 6 ENTITY_NODE 7 PROCESSING_INSTRUCTION_NODE 8 COMMENT_NODE 9 DOCUMENT_NODE 10 DOCUMENT_TYPE_NODE 11 DOCUMENT_FRAGMENT_NODE 12 NOTATION_NODE

 

 

参考:https://www.w3school.com.cn/jsref/prop_node_nodetype.asp



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3